package cn.dyp.com.manualcontrol.request;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * 控制器请求类
 * 
 * @author asus
 *
 */
public class ControlRequest extends AgricultureRequest {
	// action name
	private static final String ACTION = "control";

	// 水泵
	private int waterPump = 0; // 0表示关闭，1表示打开
	// 风扇
	private int blower = 0;// 0表示关闭，1表示打开
	// 路灯
	private int roadLamp = 0;// 0表示关闭，1表示打开
	// 蜂鸣器
	private int buzzer = 0;// 0表示关闭，1表示打开

	private boolean isCtrlWater = false;// 是否要控制水泵
	private boolean isCtrlBlower = false;// 是否要控制风扇
	private boolean isCtrlRoadLamp = false;// 是否要控制路灯
	private boolean isCtrlBuzzer = false;// 是否要控制蜂鸣器

	public ControlRequest(String userName) {
		super(userName);
	}

	/**
	 * 设置Action
	 * 
	 * @see cn.dyp.com.manualcontrol.request.BaseRequest#getActionName()
	 */
	@Override
	protected String getActionName() {
		return ACTION;
	}

	/**
	 * jason协议时的获取body函数
	 * 
	 * @see cn.dyp.com.manualcontrol.request.BaseRequest#onGetJasonBody()
	 */
	@Override
	protected String onGetJasonBody() {
		JSONObject jsonObj = new JSONObject();
		try {
			jsonObj.put("username", userName);
			// 是否要控制风扇
			if (isCtrlBlower) {
				jsonObj.put("Blower", blower);
			}
			// 是否要控制蜂鸣器
			if (isCtrlBuzzer) {
				jsonObj.put("Buzzer", buzzer);
			}
			// 是否要控制路灯
			if (isCtrlRoadLamp) {
				jsonObj.put("Roadlamp", roadLamp);
			}
			// 是否要控制水泵
			if (isCtrlWater) {
				jsonObj.put("WaterPump", waterPump);
			}
			return jsonObj.toString();
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return super.onGetJasonBody();
	}

	/**
	 * 设置控制风扇开关的参数
	 * 
	 * @param blower
	 *            0表示关闭，1表示打开
	 */
	public void setBlower(int blower) {
		this.blower = blower;
		this.isCtrlBlower = true;
	}

	/**
	 * 设置控制蜂鸣器开关的参数
	 * 
	 * @param buzzer
	 *            0表示关闭，1表示打开
	 */
	public void setBuzzer(int buzzer) {
		this.buzzer = buzzer;
		this.isCtrlBuzzer = true;
	}

	/**
	 * 设置控制水泵开关的参数
	 * 
	 * @param waterPump
	 *            0表示关闭，1表示打开
	 */
	public void setWaterPump(int waterPump) {
		this.waterPump = waterPump;
		this.isCtrlWater = true;
	}

	/**
	 * 设置控制路灯开关的参数
	 * 
	 * @param roadLamp
	 *            0表示关闭，1表示打开
	 */
	public void setRoadLamp(int roadLamp) {
		this.roadLamp = roadLamp;
		this.isCtrlRoadLamp = true;
	}

	/**
	 * 控制状态重置
	 * 
	 */
	public void resetRequest() {
		isCtrlWater = false;
		isCtrlBlower = false;
		isCtrlRoadLamp = false;
		isCtrlBuzzer = false;
	}

}
